// #include <stdio.h>
// #include "windows.h"
// #include <time.h>
// #define ROW 9
// #define COL 9
// #define ROWS (ROW+2)
// #define COLS (COL+2)
// #define EASY_COUNT 10
//
// // 函数声明
// void menu();
// void test();
// void game();
// void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);
// void DisplayBoard(char board[ROWS][COLS], int row, int col);
// void SetMine(char mine[ROWS][COLS], int row, int col);
// void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
// int GetMineCount(char mine[ROWS][COLS], int x, int y);
// void RevealCells(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y, int row, int col);
//
// // 主函数
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     test();
//     return 0;
// }
//
// // 菜单显示
// void menu() {
//     printf("********1. 开始游戏*************\n");
//     printf("********0. 退出游戏*************\n");
// }
//
// // 测试与菜单交互
// void test() {
//     srand((unsigned int)time(NULL));
//     int input = 0;
//     do {
//         menu();
//         printf("请输入数字：");
//         scanf("%d", &input);
//         switch (input) {
//             case 1:
//                 game();
//                 break;
//             case 0:
//                 printf("已退出游戏\n");
//                 break;
//             default:
//                 printf("输入错误，重新输入数字\n");
//                 break;
//         }
//     } while (input);
// }
//
// // 初始化棋盘
// void InitBoard(char board[ROWS][COLS], int rows, int cols, char set) {
//     for (int i = 0; i < rows; i++) {
//         for (int j = 0; j < cols; j++) {
//             board[i][j] = set;
//         }
//     }
// }
//
// // 显示棋盘
// void DisplayBoard(char board[ROWS][COLS], int row, int col) {
//     printf("   "); // 打印列号标题
//     for (int j = 1; j <= col; j++) {
//         printf("%2d ", j);
//     }
//     printf("\n");
//
//     for (int i = 1; i <= row; i++) {
//         printf("%2d ", i); // 打印行号
//         for (int j = 1; j <= col; j++) {
//             printf(" %c ", board[i][j]);
//         }
//         printf("\n");
//     }
// }
//
// // 随机布置地雷
// void SetMine(char mine[ROWS][COLS], int row, int col) {
//     int count = EASY_COUNT;
//     while (count) {
//         int x = rand() % row + 1; // 保证坐标在 1 ~ ROW 之间
//         int y = rand() % col + 1;
//         if (mine[x][y] == '0') { // 避免重复布雷
//             mine[x][y] = '1';
//             count--;
//         }
//     }
// }
//
// // 计算周围地雷数
// int GetMineCount(char mine[ROWS][COLS], int x, int y) {
//     int count = 0;
//     for (int i = -1; i <= 1; i++) {
//         for (int j = -1; j <= 1; j++) {
//             if (x + i >= 1 && x + i <= ROW && y + j >= 1 && y + j <= COL) { // 边界判断
//                 count += (mine[x + i][y + j] - '0');
//             }
//         }
//     }
//     return count;
// }
//
// // 递归显示周围的格子
// void RevealCells(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y, int row, int col) {
//     if (show[x][y] != '*' || x < 1 || x > row || y < 1 || y > col) {
//         return; // 如果该格子已经显示过，或者坐标越界，则退出
//     }
//
//     int mineCount = GetMineCount(mine, x, y);
//     show[x][y] = mineCount + '0'; // 显示周围的地雷数量
//
//     // 如果周围没有地雷，则递归显示周围的格子
//     if (mineCount == 0) {
//         for (int i = -1; i <= 1; i++) {
//             for (int j = -1; j <= 1; j++) {
//                 if (x + i >= 1 && x + i <= row && y + j >= 1 && y + j <= col && (i != 0 || j != 0)) {
//                     RevealCells(mine, show, x + i, y + j, row, col);
//                 }
//             }
//         }
//     }
// }
//
// // 用户操作与游戏逻辑
// void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) {
//     int x, y;
//     int win = 0;
//
//     while (win < row * col - EASY_COUNT) {
//         printf("请输入坐标 (格式: x y): ");
//         scanf("%d %d", &x, &y);
//
//         if (x >= 1 && x <= row && y >= 1 && y <= col) {
//             if (mine[x][y] == '1') {
//                 printf("踩雷了，游戏结束！\n");
//                 DisplayBoard(mine, ROW, COL);
//                 break;
//             } else {
//                 RevealCells(mine, show, x, y, row, col); // 展开当前格子及周围的格子
//                 DisplayBoard(show, ROW, COL);
//                 win++;
//             }
//         } else {
//             printf("越界输入！请输入 x(1~9) y(1~9)\n");
//         }
//     }
//
//     if (win == row * col - EASY_COUNT) {
//         printf("恭喜你，成功过关！\n");
//         DisplayBoard(mine, ROW, COL);
//     }
// }
//
// // 游戏主流程
// void game() {
//     char mine[ROWS][COLS] = {0};
//     char show[ROWS][COLS] = {0};
//     InitBoard(mine, ROWS, COLS, '0'); // 初始化地雷棋盘
//     InitBoard(show, ROWS, COLS, '*'); // 初始化显示棋盘
//
//     SetMine(mine, ROW, COL); // 随机布置地雷
//
//     DisplayBoard(show, ROW, COL); // 显示初始棋盘
//     FindMine(mine, show, ROW, COL); // 开始游戏
// }
